#pragma once
#include "Piece.h"
#include "Board.h"
#include "DirectInput.h"
#include <Windows.h>
#include"Vector.hpp"


enum eGameState
{
	CONSOLE_SELECT,	// allows player to choose what console to use								  - Alstad
	ORDER_SELECT,	// using a dice roll, players are assigned order							  - Alstad
	CARD_SELECT,	// player selects a card to play; validates that card can be used in some way - Weir
	PIECE_SELECT,	// player selects what piece(s) to move; validates that that is a legal move  - Steven
	PIECE_MOVE,		// piece animation for moving												  - Steven
	PLAYER_SWITCH,	// puts up a texture screen to show that it's the next player's turn		  - Weir
	END,			// the end state, displaying the winner										  - Alstad


	PAUSE			// returns to menu

};

// the game engine is responsible for handling all objects and events within the game - Alstad
class Game
{
private:
	Game();
	
	
	
	
	
public:
	eGameState m_eState;
	Board*	m_pBoard;
	Player  m_players[g_inumPlayers];
	bool m_bDrawBoard;
	int whoseTurnIsIt;

	int mi_currentId;
	static inline Game* Engine()
	{static Game g; return &g;}
	bool Init();
	bool Update();
	void ConsoleSelect();
	void OrderSelect();
	void CardSelect();	
	void PieceSelect();
	void PieceMove();
	void PlayerSwitch();
	void EndGame();
	

	void Release();
	~Game();
};
